// 封装本地存储方法

enum CacheType {
  Local,
  Session
}
class Cache {
  storage: Storage
  constructor(type: CacheType) {
    // 判断可以使用的存储类型 -- 指的是 会话 或者 本地存储
    this.storage = type === CacheType.Local ? localStorage : sessionStorage;
  }
  setCache(key: string, value: any) {
    if (value) {
      this.storage.setItem(key, JSON.stringify(value));
    }
  }
  getCache(key: string) {
    const value = this.storage.getItem(key);
    if (value) {
      return value;
    }
  }
  removeCache(key: string) {
    this.storage.removeItem(key)
  }
  clear() {
    this.storage.clear()
  }
}

const localCache = new Cache(CacheType.Local);
const sessionCache = new Cache(CacheType.Session);
export { localCache, sessionCache };